package com.redepronik.negosys.seguridad.entity;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

/**
 * The persistent class for the rol database table.
 * 
 */
@Entity
@Table(schema = "seguridad", name = "rol")
@NamedQuery(name = "Rol.findAll", query = "SELECT r FROM Rol r")
public class Rol implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(allocationSize = 1, name = "ROL_ROLID_GENERATOR", sequenceName = "SEGURIDAD.ROL_ROLID_SEQ")
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ROL_ROLID_GENERATOR")
	@Column(unique = true, nullable = false)
	private Integer rolid;

	@Column(nullable = false, length = 50)
	private String nombre;

	@Column(length = 200)
	private String descripcion;

	// bi-directional many-to-one association to Rolgrupo
	@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, mappedBy = "rol")
	private List<Rolgrupo> rolgrupos;

	// bi-directional many-to-one association to Rolmenu
	@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, mappedBy = "rol")
	private List<Rolmenu> rolmenus;

	// bi-directional many-to-one association to Rolusuario
	@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, mappedBy = "rol")
	private List<Rolusuario> rolusuarios;

	public Rol() {
	}

	public Rolgrupo addRolgrupo(Rolgrupo rolgrupo) {
		getRolgrupos().add(rolgrupo);
		rolgrupo.setRol(this);

		return rolgrupo;
	}

	public Rolmenu addRolmenus(Rolmenu rolmenus) {
		getRolmenus().add(rolmenus);
		rolmenus.setRol(this);

		return rolmenus;
	}

	public Rolusuario addRolusuario(Rolusuario rolusuario) {
		getRolusuarios().add(rolusuario);
		rolusuario.setRol(this);

		return rolusuario;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public String getNombre() {
		return this.nombre;
	}

	public List<Rolgrupo> getRolgrupos() {
		return this.rolgrupos;
	}

	public Integer getRolid() {
		return this.rolid;
	}

	public List<Rolmenu> getRolmenus() {
		return this.rolmenus;
	}

	public List<Rolusuario> getRolusuarios() {
		return this.rolusuarios;
	}

	public Rolgrupo removeRolgrupo(Rolgrupo rolgrupo) {
		getRolgrupos().remove(rolgrupo);
		rolgrupo.setRol(null);

		return rolgrupo;
	}

	public Rolmenu removeRolmenus(Rolmenu rolmenus) {
		getRolmenus().remove(rolmenus);
		rolmenus.setRol(null);

		return rolmenus;
	}

	public Rolusuario removeRolusuario(Rolusuario rolusuario) {
		getRolusuarios().remove(rolusuario);
		rolusuario.setRol(null);

		return rolusuario;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public void setRolgrupos(List<Rolgrupo> rolgrupos) {
		this.rolgrupos = rolgrupos;
	}

	public void setRolid(Integer rolid) {
		this.rolid = rolid;
	}

	public void setRolmenus(List<Rolmenu> rolmenus) {
		this.rolmenus = rolmenus;
	}

	public void setRolusuarios(List<Rolusuario> rolusuarios) {
		this.rolusuarios = rolusuarios;
	}

}